home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Pascal Super Library
/
Pascal Super Library (CW International)(1997).bin
/
BORL_TIP
/
TI1000
/
TI1729.ASC
< prev
next >
Wrap
Text File
|
1993-10-21
|
5KB
|
265 lines
PRODUCT : Pascal NUMBER : 1729
VERSION : All
OS : DOS
DATE : October 21, 1993 PAGE : 1/4
TITLE : Having two Turbo Vision dialogs on the screen at once
{
The following program demonstrates one technique for placing
two dialogs on the screen at the same time in a Turbo Vision
application. The key to this process is to make the first
dialog a modeless dialog, and then the second can be either
modal or modeless, depending on your needs. In this case,
the second dialog is modal.
When a modal dialog is on the screen, the user must close it
before getting access to the other features in an application.
For instance, a user cannot use the main programs menu while
modal dialog is on the screen. This is not true of modeless
dialogs. Modal dialogs are started with ExecView or ExecDialog.
Modeless dialogs are "Inserted" into the desktop.
}
{$X+}
Program TwoDlgs;
Uses
App,
Dialogs,
Drivers,
Menus,
MsgBox,
Views,
Objects;
const
cmDialogBox = 101;
cmPress2 = 102;
type
Consistency = (Solid, Runny, Melted);
Cheese = (None, Hvarti, Tilset, Jarlsberg);
PTrainDialog = ^TTrainDialog;
TTrainDialog = Object(TDialog)
constructor Init(Bounds: TRect; ATitle: String);
procedure HandleEvent(var Event: TEvent); virtual;
procedure Press2;
end;
PRODUCT : Pascal NUMBER : 1729
VERSION : All
OS : DOS
DATE : October 21, 1993 PAGE : 2/4
TITLE : Having two Turbo Vision dialogs on the screen at once
TMyApp = Object(TApplication)
constructor Init;
procedure InitMenuBar; virtual;
procedure InitStatusLine; virtual;
procedure HandleEvent(var Event: TEvent); virtual;
procedure DialogBox;
end;
constructor TTrainDialog.Init(Bounds: TRect; ATitle: String);
var
R: TRect;
Control: PView;
begin
TDialog.Init(Bounds, ATitle);
R.Assign(2, (Bounds.B.Y - Bounds.A.Y) - 12,
(Bounds.B.X - Bounds.A.X) - 2,
(Bounds.B.Y - Bounds.A.Y) - 3);
Insert(New(PButton, Init(R, 'Click Here',
cmPress2, bfNormal)));
end;
procedure TTrainDialog.HandleEvent(var Event: TEvent);
begin
TDialog.HandleEvent(Event);
if Event.What = EvCommand then begin
case Event.Command of
cmPress2: Press2;
else Exit;
end;
ClearEvent(Event);
end;
end;
procedure TTrainDialog.Press2;
var
D: PDialog;
R: TRect;
Control: Word;
begin
R.Assign(48,3,74,14);
D := New(PDialog, Init(R, 'Another Dialog'));
PRODUCT : Pascal NUMBER : 1729
VERSION : All
OS : DOS
DATE : October 21, 1993 PAGE : 3/4
TITLE : Having two Turbo Vision dialogs on the screen at once
R.Assign(4, 2, 22, 10);
D^.Insert(New(PButton, Init(R, 'Click To Close',
cmOk, bfDefault)));
Control := DeskTop^.ExecView(D);
Dispose(D, Done);
end;
constructor TMyApp.Init;
var
R: TRect;
begin
TApplication.Init;
end;
procedure TMyApp.HandleEvent(var Event: TEvent);
begin
TApplication.HandleEvent(Event);
if Event.What = EvCommand then begin
case Event.Command of
cmDialogBox: DialogBox;
else
Exit;
end;
ClearEvent(Event);
end;
end;
procedure TMyApp.InitMenuBar;
var
R: TRect;
begin
GetExtent(R);
R.B.Y := R.A.Y + 1;
MenuBar := New(PMenuBar, Init(R, NewMenu(
NewSubMenu('~F~ile', hcNoContext, NewMenu(
NewItem('~D~ialogs', 'Alt-D', kbAltD,
cmDialogBox, hcNoContext,
NewLine(
NewItem('E~x~it', 'Alt-X', kbAltX, cmQuit, hcNoContext,
nil)))),
nil))
));
PRODUCT : Pascal NUMBER : 1729
VERSION : All
OS : DOS
DATE : October 21, 1993 PAGE : 4/4
TITLE : Having two Turbo Vision dialogs on the screen at once
end;
procedure TMyApp.InitStatusLine;
var R: TRect;
begin
GetExtent(R);
R.A.Y := R.B.Y - 1;
StatusLine := New(PStatusLine, Init(R,
NewStatusDef(0, $FFFF,
NewStatusKey('', kbF10, cmMenu,
NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit,
NewStatusKey('~Alt-D~ Dialog', kbAltD, cmDialogBox,
NewStatusKey('~Alt-F3~ Close', kbAltF3, cmClose,
nil)))),
nil)
));
end;
procedure TMyApp.DialogBox;
var
R: TRect;
D: PDialog;
Control: Word;
begin
R.Assign(20,5,60,21);
D := New(PTrainDialog, Init(R, 'Training Dialog'));
DeskTop^.Insert(D);
end;
var
A: TMyApp;
begin
A.Init;
A.Run;
A.Done;
end.
DISCLAIMER: You have the right to use this technical information
subject to the terms of the No-Nonsense License Statement that
you received with the Borland product to which this information
pertains.